<?php
class UnidadeMedidaBSN extends GenericBSN {

	function __construct() {
		$this->dao = new UnidadeMedidaDAO();
	}

	public function consultar($vars) {
		$this->preencher($vars);
		$this->Records = $this->dao->consultar($this->where, $this->params, $this->order . $this->limit);
		$this->TotalRecordCount = $this->dao->contarRegistros($this->where, $this->params);   
		$this->Result  = "OK";
	}
	
	public function consultarDescricao($vars) {
		if ($vars['descricao'] == "") {
			$nome = "%";
		} else {
			$nome = "%" . $vars['descricao']. "%";
		}
		$this->Records = $this->dao->consultarDescricao($nome);
		$this->Result = "OK";
		$this->TotalRecordCount = 0;
		foreach ($this->Records as $record) {
			++$this->TotalRecordCount;
		}
	}
	
	public function consultarRelacoes($vars) {
		$dao = new Und_x_UnidadeDAO();

		$this->Records = $dao->consultarRelacoes($vars['unidade_p']);
		$this->Result = "OK";
		$this->TotalRecordCount = 0;
		foreach ($this->Records as $record) {
			++$this->TotalRecordCount;
		}
	}
	
	public function inserir($vars) {
		try {
			$registro['abrev']		= $vars['abrev'];
			$registro['descricao'] 	= $vars['descricao'];
						
			$this->Record  = $this->dao->inserir($registro);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->dao->rollback();
			$this->Result  = "ERROR";
			$this->Message = $e->getMessage();
		}
	}
	
	public function alterar($vars) {
		try {
			$registro['abrev']		= $vars['abrev'];
			$registro['descricao'] 	= $vars['descricao'];
			$registro['id']	   		= $vars['id'];
				
			$this->Record  = $this->dao->alterar($registro);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->dao->rollback();
			$this->Result  = "ERROR";
			$this->Message = $e->getMessage();
		}
	}

	public function excluir($registro) {
		$id = $registro['id'];

		try {
			$this->dao->Excluir($id);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->dao->rollback();
			$this->Result  = "ERROR";
			$this->Message = $e->getMessage();
		}
	}
	
	public function inserirRelacao($vars) {
		try {
			$und = $this->dao->consultarDescricao($vars['unidade_s_desc']);
			if (isset($und[0]['id'])) {
				$reg['unidade_s'] = $und[0]['id'];
			} else {
				throw new Exception("Unidade Secundária <b>" . $vars['unidade_s_desc'] . "</b> não encontrada!");
			}
			$reg['unidade_p'] = $vars['unidade_p'];
			$reg['relacao']   = $vars['relacao'];
			
			$dao = new Und_x_UnidadeDAO();
			$this->Record  = $dao->inserir($reg);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->dao->rollback();
			$this->Result  = "ERROR";
			$this->Message = $e->getMessage();
		}
	}
	
	public function excluirRelacao($vars) {
		try {
			$dao = new Und_x_UnidadeDAO();
			$pk = explode(",", $vars["pk"]);
			$reg['unidade_p'] = $pk[0];
			$reg['unidade_s'] = $pk[1];
	
			$dao->excluir($reg);
			$this->Result  = "OK";
		} catch (Exception $e) {
			$this->Result  = "ERROR";
			$this->Message = $e->getMessage();
		}
	}
}
?>